home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / shells / kiss-0.11 / kiss-0 / kiss / src / sighandler.c < prev    next >
C/C++ Source or Header  |  1995-03-23  |  683b  |  31 lines

  1. #include "kiss.h"
  2.  
  3. void sighandler (int sig)
  4. {
  5.     register char
  6.     *cp;
  7.     
  8.     if (sig == SIGINT)
  9.     error ("ok, ^C.");
  10.     else if (sig == SIGUSR1 || sig == SIGUSR2)
  11.     {
  12.     warning ("caught usersignal %d, reloading..", sig);
  13.     execv (orgargv [0], orgargv);
  14.     error ("bummer, can't reload \"%s\"", orgargv [0]);
  15.     }
  16.     else if (sig == SIGSEGV)
  17.     {
  18.     signal (SIGSEGV, SIG_DFL);
  19.     warning ("oops, segment violation");
  20.     if ( (cp = getenv ("SHLVL")) && atoi (cp) == 1 && inputparsed)
  21.     if (inputparsed)
  22.     {
  23.         warning ("trying to reload");
  24.         execv (orgargv [0], orgargv);
  25.     }
  26.     error ("bummer.. it's not a perfect world");
  27.     }
  28.     
  29.     error ("caught signal %d, terminating", sig);
  30. }
  31.